using System;
using DataContracts;
using System.Collections.Generic;

namespace TrainingWorkshop.MVPWebsite.Authority
{
    public interface IAuthorityController
    {
        /// <summary>
        /// Save a New Authority
        /// </summary>
        /// <param name="authorityDTO"></param>
        /// <returns></returns>
        bool AddNewAuthority(AuthorityDTO authorityDTO);

        /// <summary>
        /// Delete Authority
        /// </summary>
        /// <param name="authorityId"></param>
        /// <returns></returns>
        bool DeleteAuthority(int authorityId);

        /// <summary>
        /// Update Authority
        /// </summary>
        /// <param name="authorityDTO"></param>
        /// <returns></returns>
        bool UpdateAuthority(AuthorityDTO authorityDTO);

        /// <summary>
        /// Get Authority by Current AuthorityId
        /// </summary>
        /// <param name="authorityId"></param>
        /// <returns></returns>
        AuthorityDTO GetAuthorityById(int authorityId);

        /// <summary>
        /// Get All Authority Level
        /// </summary>
        /// <returns></returns>
        List<AuthorityLevelDTO> GetAllAuthorityLevel();

        /// <summary>
        /// Get All Authority
        /// </summary>
        /// <returns></returns>
        List<AuthorityDTO> GetAllAuthority();

        /// <summary>
        /// Get Search Authority
        /// </summary>
        /// <param name="authorityName"></param>
        /// <param name="levelName"></param>
        /// <returns></returns>
        List<AuthorityDTO> SearchAuthority(string authorityName, int levelId);
    }
}
